package com.ontheroad.api.request;

import com.ontheroad.api.validate.BaseGroup;

import javax.validation.constraints.*;

/**
 * Created by kedong on 2017/9/23 0023.
 */
public class ActivityRequest extends Request {
    private static final long serialVersionUID = 6930097883094112518L;

    public interface publish extends BaseGroup {
    }

    public interface list {
    }

    public interface approve {
    }

    public interface detail extends BaseGroup {
    }

    public interface joinApply extends BaseGroup {
    }

    public interface search extends BaseGroup {
    }


    /**
     * 用户ID
     */
    private Integer targetId;

    @NotNull(groups = {detail.class, joinApply.class})
    private Integer activityId;

    /**
     * 参加活动的用户ID，审批时用此ID
     */
    @NotNull(groups = {approve.class})
    private Integer joinUserId;

    /**
     * 审批结果(0:审核中；1：通过；2：未通过)
     */
    @NotNull(groups = {approve.class})
    private Integer state;

    /**
     * 审批未通过原因
     */
    private String reason;

    /**
     * 活动标题
     */
    @NotNull(groups = {publish.class})
    private String title;

    /**
     * 活动简介
     */
    @NotNull(groups = {publish.class, joinApply.class})
    private String content;

    /**
     * 活动图片
     */
    @NotNull(groups = {publish.class})
    private String images;

    /**
     * 活动类型
     */
    @NotNull(groups = {publish.class})
    private String type;

    /**
     * 搜索时的活动类型
     */
    private Integer searchType;

    /**
     * 活动开始时间（标准时间戳）
     */
    @NotNull(groups = {publish.class})
    private Long startTime;

    /**
     * 活动结束时间（标准时间戳）
     */
    @NotNull(groups = {publish.class})
    private Long endTime;

    /**
     * 活动目的地
     */
    @NotNull(groups = {publish.class})
    private String address;

    /**
     * 活动 出发地
     */
    @NotNull(groups = {publish.class})
    private String city;

    /**
     * 活动费用
     */
    @NotNull(groups = {publish.class})
    private Double cost;

    /**
     * 人数(0:表示人数不限)
     */
    @NotNull(groups = {publish.class})
    @Min(value = 0, message = "人数上限不能为负数")
    private Integer limitCount;

    /**
     * 查询时间类型（1：本周，2：下周，3，下月，4：自定义时间）
     */
    private Integer dateType;

    /**
     * 查询自定义开始时间
     */
    private Long searchStartTime;

    /**
     * 查询自定义结束时间
     */
    private Long searchEndTime;

    /**
     * 费用筛选：1:AA，2:免费，3:商用
     */
    @NotNull(groups = {publish.class})
    private Integer costType;

    /**
     * 好友参与的
     */
    private Boolean freindJoin = false;

    /**
     * 搜索关键字
     * 可搜索目的地、标题
     */
    private String searchKey;

    private Integer replyedid;


    public static long getSerialVersionUID() {
        return serialVersionUID;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getImages() {
        return images;
    }

    public void setImages(String images) {
        this.images = images;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public Long getStartTime() {
        return startTime;
    }

    public void setStartTime(Long startTime) {
        this.startTime = startTime;
    }

    public Long getEndTime() {
        return endTime;
    }

    public void setEndTime(Long endTime) {
        this.endTime = endTime;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public Double getCost() {
        return cost;
    }

    public void setCost(Double cost) {
        this.cost = cost;
    }

    public Integer getLimitCount() {
        return limitCount;
    }

    public void setLimitCount(Integer limitCount) {
        this.limitCount = limitCount;
    }

    public Integer getActivityId() {
        return activityId;
    }

    public void setActivityId(Integer activityId) {
        this.activityId = activityId;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public Integer getDateType() {
        return dateType;
    }

    public void setDateType(Integer dateType) {
        this.dateType = dateType;
    }

    public Long getSearchStartTime() {
        return searchStartTime;
    }

    public void setSearchStartTime(Long searchStartTime) {
        this.searchStartTime = searchStartTime;
    }

    public Long getSearchEndTime() {
        return searchEndTime;
    }

    public void setSearchEndTime(Long searchEndTime) {
        this.searchEndTime = searchEndTime;
    }

    public Integer getCostType() {
        return costType;
    }

    public void setCostType(Integer costType) {
        this.costType = costType;
    }

    public Boolean getFreindJoin() {
        return freindJoin;
    }

    public void setFreindJoin(Boolean freindJoin) {
        this.freindJoin = freindJoin;
    }

    public String getSearchKey() {
        return searchKey;
    }

    public void setSearchKey(String searchKey) {
        this.searchKey = searchKey;
    }

    public Integer getSearchType() {
        return searchType;
    }

    public void setSearchType(Integer searchType) {
        this.searchType = searchType;
    }

    public Integer getJoinUserId() {
        return joinUserId;
    }

    public void setJoinUserId(Integer joinUserId) {
        this.joinUserId = joinUserId;
    }

    public Integer getState() {
        return state;
    }

    public void setState(Integer state) {
        this.state = state;
    }

    public String getReason() {
        return reason;
    }

    public void setReason(String reason) {
        this.reason = reason;
    }

    public Integer getReplyedid() {
        return replyedid;
    }

    public ActivityRequest setReplyedid(Integer replyedid) {
        this.replyedid = replyedid;
        return this;
    }

    public Integer getTargetId() {
        return targetId;
    }

    public void setTargetId(Integer targetId) {
        this.targetId = targetId;
    }
}
